A database application operates on databases made up of data records. Each data record includes a data portion, which contains the data of interest, and a header portion, which contains verification data whose function is to indicate the integrity of the record. Such verification data can include specified patterns written at pre-determined locations within the header, or checksum data that depends on the contents of the data portion of the data record.
A database application executing on a host often sends a data-storage system a write request to store data records at a target location. As part of executing the write request, the data-storage system executes certain data verification steps. Data verification tests typically include inspecting the verification data in each newly-written record to confirm the integrity of the data record. For example, the database application may verify the checksum verification, or check to see if a particular byte or group of bytes has a particular value.
These known data verification procedures readily distinguish between data records created by the database application and data records created by another application. In this way, they reduce the likelihood that bad data records will corrupt a database.
Sometimes, however, a database application will write a perfectly good data record into the wrong location within a database. Because the data record itself is good, the existing data verification procedures will not detect an error. However, because the good data record has been written to the wrong location, the database has nevertheless become corrupted.